import java.io.File;
import java.io.IOException;
/**
 * 列出file类的一些操作,过滤  遍历等
 */
public class _02_02_FileUtils {

    /**
     * 列出指定目录下(包括其子目录)的所有文件
     * @param dir
     * @throws IOException
     */
    public static void listDirectory(File dir)throws IOException{

        if (!dir.exists()){
            throw new IllegalArgumentException("目录" + dir + "不存在");
        }
        if (!dir.isDirectory()){
            throw new IllegalArgumentException(dir + "不是目录");
        }
        //列出当前目录下的子目录和文件
        String[] files = dir.list();

        /*for (String s : files) {
            System.out.println(s);
        }*/
        /**
         * 返回的是字符串数组 子目录的名称,不包含子目录下面的文件
         * 如果说要遍历子目录下的内容就需要构造成File对象做递归操作
         * File 提供了直接返回File对象的Api
         */
        File[] files1 = dir.listFiles();//返回的是直接子目录(文件)的抽象
        if(files1 != null && files1.length > 0){
            for (File file : files1) {
                //递归
                if (file.isDirectory()){
                    listDirectory(file);
                }else{
                    System.out.println(file);
                }
            }
        }


    }

    public static void main(String[] args) throws IOException {
        listDirectory(new File("D:\\Git_project"));
    }
}
